package cate.game.server.configuration;

import cate.common.C2GameCommon;
import cate.game.GameBody;
import cp.solution.CpSolutionCommon;
import easy.java.EasyJava;
import easy.socket.EasySocket;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;

// 在初始化或刷新ApplicationContext时发布（例如，通过使用ConfigurableApplicationContext接口上的refresh（）方法）。
// 在这里，“已初始化”是指所有Bean都已加载，检测到并激活了后处理器Bean，已预先实例化单例并且可以使用ApplicationContext对象。
// 只要尚未关闭上下文，只要选定的ApplicationContext实际上支持这种“热”刷新，就可以多次触发刷新。
// 例如，XmlWebApplicationContext支持热刷新，但GenericApplicationContext不支持。
@Slf4j
@Component
public class AppRefreshedListener implements ApplicationListener<ContextRefreshedEvent> {

    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        log.info("监听 ContextRefreshedEvent = {}", event);
        log.info("库版本：{}, {}, {}, {}, {}", GameBody.version(), C2GameCommon.version(), CpSolutionCommon.version(),
                EasyJava.version(), EasySocket.version());

        final ApplicationContext app = event.getApplicationContext();
    }
}
